home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / FROMUTS / THYNX / !Thynx2 / Docs / Source < prev   
Text File  |  1988-01-07  |  17KB  |  638 lines

  1. REM >Ram:!RunImage
  2. REM Thynx, the multipurpose tool.
  3. REM © Thinkpix Systems 1992
  4. ON ERROR PROCerror:END
  5. shit%=FALSE
  6. taskname$="Thynx 2":quit%=FALSE
  7. SYS"Wimp_Initialise",200,&4B534154,taskname$ TO version%,task%
  8. :
  9. PROCStartup
  10. ON ERROR MOUSE ON:IF FNerror THEN PROCclosedown:END
  11. REPEAT
  12. SYS"Wimp_Poll",,data% TO r%
  13. CASE r% OF
  14. WHEN 0     : shit%=FALSE
  15. SYS"Wimp_GetPointerInfo",,data%
  16. IF (data%!8=1 OR data%!8=4) AND (data%!12=-2 AND data%!16=0) THEN PROCopenfr(mainwin%)
  17. IF blonk% THEN
  18. SYS"OS_ReadMonotonicTime" TO time%
  19. CASE TRUE OF
  20. WHEN darken%:MOUSE xm%,ym%,a%: IF xm%<>oxm% OR ym%<>oym% OR !Key OR a% THEN PROClighten:darken%=FALSE:rtime%=time%+ttblnk%:!Key=0
  21. oxm%=xm%:oym%=ym%
  22. PROCbounce
  23. WHEN time%>rtime%:PROCdarken:darken%=TRUE
  24. OTHERWISE:MOUSE xm%,ym%,a%
  25. IF xm%<>oxm% OR ym%<>oym% OR !Key OR a% THEN rtime%=time%+ttblnk%:!Key=0
  26. oxm%=xm%:oym%=ym%
  27. ENDCASE
  28. ENDIF
  29. WHEN 1     : PROCredraw
  30. WHEN 2     : SYS"Wimp_OpenWindow",,data%
  31. WHEN 3     : SYS"Wimp_CloseWindow",,data%
  32. WHEN 6     : PROCbuttons(!data%,data%!4,data%!8,data%!12,data%!16)
  33. WHEN 8     : PROCkey
  34. WHEN 9     : PROCmenuselect
  35. WHEN 17,18 : IF data%!16=3 THEN
  36. PROCdragin
  37. ELSE
  38. IF data%!16=&400C1 AND blonk% THEN SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
  39. quit%=(data%!16=0)
  40. ENDIF
  41. ENDCASE
  42. UNTIL quit%
  43. OSCLI"NTrash"
  44. SYS "OS_Release",&14,kcode,0
  45. SYS "OS_Module",7,,rma%
  46. PROCclosedown
  47. END
  48. :
  49. DEFPROCredraw
  50. LOCAL more%,x%,y%,more%
  51. SYS"Wimp_RedrawWindow",,data% TO more%
  52. WHILE more%
  53. x%=data%!4-data%!20
  54. y%=data%!16-data%!24
  55. PROCdraw(x%,y%)
  56. SYS"Wimp_GetRectangle",,data% TO more%
  57. ENDWHILE
  58. ENDPROC
  59. :
  60. DEFPROCdraw(x%,y%)
  61. MOVE x%+4,y%-16:PRINT"    Name:"
  62. MOVE x%+4,y%-68:PRINT" Purpose:"
  63. MOVEx%+4,y%-120:PRINT"  Author:"
  64. MOVEx%+4,y%-172:PRINT" Version:"
  65. ENDPROC
  66. :
  67. DEFPROCbuttons(x%,y%,z%,h%,i%)
  68. CASE h% OF
  69. WHEN -2:IF z%=2 THEN PROCshowmenu(menu%,x%,y%,TRUE):ELSE:PROCopenfr(mainwin%)
  70. WHEN mainwin%:IF z%=2 THEN PROCshowmenu(menu%,x%,y%,FALSE)
  71. IF NOT shit% AND z%<>2 THEN
  72. CASE i% OF
  73. WHEN 0:OSCLI"Trash"
  74. WHEN 2:PROCopenfr(filewin%)
  75. WHEN 3:SYS "Wimp_StartTask","Time"
  76. WHEN 5:PROCfront:OSCLI"Ex":PROCcont:PROCrestore
  77. WHEN 6:IF (z% AND 4) THEN OSCLI"NoDir"
  78. IF (z% AND %1) THEN OSCLI"NoLib"
  79. WHEN 7: IF z%=1 THEN SYS "Wimp_StartTask","Verify"
  80. SYS "Wimp_StartTask","CheckMap"
  81. ENDCASE
  82. shit%=TRUE
  83. ENDIF
  84. WHEN filewin%:$name%=$(tdata%+(4*(i%-1)))
  85. SYS"Wimp_ForceRedraw",filewin%,0,-40,200,0
  86. ENDCASE
  87.  
  88. ENDPROC
  89. :
  90. DEFPROCmenuselect
  91. LOCAL local$
  92. CASE !data% OF
  93. WHEN 6: quit%=TRUE
  94. WHEN 1: IF data%!4=1 THEN
  95. IF FNfiles THEN OSCLI"WIPE <Thynx2$Dir>.Trash.* ~CFR~V":PROCtrashed
  96. ELSE
  97. OSCLI"Trash"
  98. ENDIF
  99. WHEN 2:OSCLI "Filer_OpenDir "+FNmenuopted(driver%,data%!4)+":"
  100. WHEN 3: CASE data%!4 OF
  101. WHEN 3:PROCallclose
  102. WHEN 0:IF $moustr%<>"" THEN MOUSE STEP EVAL($moustr%)
  103. WHEN 1:PROCfindcaret
  104. WHEN 4:SYS"Wimp_SetCaretPosition",-1
  105. WHEN 2:IF NOT data%!8 THEN
  106. blonk%=TRUE:PROCtickitem(desktop%,2):ttblnk%=FNreadtime
  107. ELSE
  108. IF blonk% THEN PROCuntickitem(desktop%,2):blonk%=FALSE:ELSE:PROCtickitem(desktop%,2):blonk%=TRUE:ttblnk%=FNreadtime
  109. ENDIF
  110. IF blonk% THEN SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
  111. WHEN 5:IF FNconfirm("WARNING THE RESULTS OF THIS FUNCTION ARE DRASTIC, are You sure? OK to Continue") THEN SYS"Wimp_BaseOfSprites" TO ,a%:SYS &2E,265,a%
  112. ENDCASE
  113. WHEN 4: CASE data%!4 OF
  114. WHEN 0:audio%=NOT audio%
  115. IF audio% OSCLI"Audio ON":ELSE:OSCLI"Audio OFF"
  116. IF audio% PROCtickitem(sound%,0):ELSE: PROCuntickitem(sound%,0)
  117. WHEN 1:speaker%=NOT speaker%
  118. IF speaker% OSCLI"Speaker ON":ELSE:OSCLI"Speaker OFF"
  119. IF speaker% PROCtickitem(sound%,1):ELSE: PROCuntickitem(sound%,1)
  120. WHEN 2:OSCLI"Tuning "+$tunstr%
  121. WHEN 3:OSCLI"Volume "+$volstr%
  122. ENDCASE
  123. WHEN 5:  CASE data%!4 OF
  124. WHEN 0:CASE data%!8 OF
  125. WHEN 0:listit%=NOT listit%
  126. IF listit% PROCtickitem(typcon%,0):ELSE:PROCuntickitem(typcon%,0)
  127. WHEN 1:tabson%=NOT tabson%
  128. IF tabson% PROCtickitem(typcon%,1):ELSE:PROCuntickitem(typcon%,1)
  129. ENDCASE
  130. WHEN 1:IF FNconfirm("Shut down Hard Disc, Close files, log off file servers -ARE YOU SURE?") THEN FOR i=0 TO 6:OSCLI"SHUTDOWN":NEXT
  131. WHEN 2:IF FNconfirm("Close all open Files, This may have some drastic effects! Are you sure?") THEN FOR i=0 TO 3:OSCLI"SHUT":NEXT
  132. WHEN 3:PROCcompac($comstr%)
  133. WHEN 4: IF data%!8=1 THEN
  134. b%=OPENIN "<Thynx2$dir>.CMOS"
  135. IF b%>0 THEN
  136. FOR a%=0 TO 239
  137. SYS"OS_Byte",162,a%,BGET#b%
  138. NEXT
  139. ENDIF
  140. CLOSE#b%
  141. ELSE
  142. b%=OPENOUT "<Thynx2$dir>.CMOS"
  143. FOR a%=0 TO 239
  144. SYS"OS_Byte",161,a% TO ,,c%
  145. BPUT#b%,c%
  146. NEXT
  147. CLOSE#b%
  148. ENDIF
  149. WHEN 5:
  150. IF data%!8>-1 AND data%!8<6 THEN 
  151. PROCuntickitem(confrag%,data%!8)
  152. ELSE
  153. a%=OPENOUT "<Thynx2$Dir>.Config"
  154. FOR loop%=0 TO 5
  155. BPUT#a%,FNticked(confrag%,loop%)
  156. NEXT
  157. BPUT#a%,$name%
  158. BPUT#a%,$blanstr%
  159. CLOSE #a%
  160. ENDIF
  161. ENDCASE
  162. ENDCASE
  163. SYS"Wimp_GetPointerInfo",,data%
  164. IF (data%!8 AND 1) THEN PROCshowmenu(!mlcn%,mlcn%!4,mlcn%!8,mlcn%!12)
  165. ENDPROC
  166. :
  167. DEFPROCkey
  168. LOCAL tt%:tt%=FALSE
  169. CASE data%!24 OF
  170. WHEN 442:TIME=0:SYS"Hourglass_Start",1:REPEATUNTILTIME>200:SYS"Hourglass_Smash"
  171. WHEN 434:PROCdarken:!Key=0:darken%=TRUE
  172. WHEN 436:PROCfindcaret
  173. OTHERWISE: tt%=TRUE
  174. ENDCASE
  175. IF tt% THEN SYS"Wimp_ProcessKey",data%!24
  176. ENDPROC
  177. :
  178. DEFPROCerror
  179. ONERROR OFF
  180. PROCclosedown
  181. PRINTREPORT$;" at line ";ERL
  182. ENDPROC
  183. :
  184. DEFFNerror
  185. ON ERROR OFF
  186. LOCAL response%
  187. !data%=ERR
  188. $(data%+4)=REPORT$+" (Internal Error Code "+STR$ERL+")"+CHR$0
  189. SYS "Wimp_ReportError",data%,3,"Thynx 2" TO ,response%
  190. IF response%=2 THEN =TRUE ELSE =FALSE
  191. :
  192. DEFPROCStartup
  193. LOCAL junk%,speed%
  194.  
  195. REM codey bit to read key press:
  196. SYS "OS_Module",6,,,16 TO ,,rma%
  197. FOR junk%=0 TO 2 STEP 2
  198. P%=rma%
  199. [OPT junk%
  200. .kcode:CMP R1,#0
  201. STREQ R0,Key
  202. MOV R15,R14
  203. .Key:EQUD 0
  204. ]
  205. NEXT
  206. SYS "OS_Claim",&14,kcode,0
  207.  
  208. DIM data% 100,mlcn% 16
  209.  
  210. OSCLI"ICONSPRITES <thynx2$Dir>.Sprites"
  211. DIM ind% 450:nxti%=ind%
  212. DIM menu% 190,trash% 78,driver% 124,desktop% 190,sound% 124,extra% 190
  213. DIM typcon% 78,cmcon% 78,tunmen% 78,volmen% 78,mouse% 78
  214. DIM compacmen% 78,blankwrt% 78,col% 80
  215. $ind%="About this Program"+CHR$13:junk%=LEN("About this Program "):nxti%+=junk%
  216. audio%=TRUE:speaker%=TRUE:listit%=FALSE:tabson%=TRUE:darken%=FALSE:blonk%=FALSE
  217. ttblnk%=0:time%=0:rtime%=0:xm%=0:oxm%=0:ym%=0:oym%=0
  218. infowind%=FNnewwindow(0,0,636,216,0,0,&8400008F,ind%,1,1)
  219. keywin%=FNnewwindow(8000,2000,100,100,0,0,&1050,ind%,1,1)
  220.  
  221. mainwin%=FNnewwindow(2,138,600,78,0,0,&870000DF,nxti%,1,1)
  222. $nxti%="Thynx II"+CHR$13:nxti%+=9
  223. filewin%=FNnewwindow(100,138,200,-1,0,0,&BF0000DF,nxti%,1,1)
  224. $nxti%="Types"+CHR$13:nxti%+=6
  225.  
  226. PROCopen(keywin%)
  227.  
  228. junk%=FNstartmenu(trash%,"Trash",190)
  229. junk%=FNindirmenuop(junk%,0,-1,"Open Area")
  230. junk%=FNindirmenuop(junk%,&80,-1,"Clear Trash")
  231.  
  232. junk%=FNstartmenu(driver%,"Driver",140)
  233. junk%=FNmenuop(junk%,0,-1,"Printer")
  234. junk%=FNmenuop(junk%,0,-1,"NetPrint")
  235. junk%=FNmenuop(junk%,0,-1,"Serial")
  236. junk%=FNmenuop(junk%,&80,-1,"Null")
  237.  
  238. DIM confrag% 220
  239. junk%=FNstartmenu(confrag%,"Config",230)
  240. junk%=FNmenuop(junk%,0,-1,"Icon")
  241. junk%=FNindirmenuop(junk%,0,-1,"Main wind")
  242. junk%=FNindirmenuop(junk%,0,-1,"File wind")
  243. junk%=FNindirmenuop(junk%,0,-1,"Clear Trash")
  244. junk%=FNindirmenuop(junk%,0,-1,"Restore CMOS")
  245. junk%=FNindirmenuop(junk%,2,-1,"Screen Blank")
  246. junk%=FNindirmenuop(junk%,&80,-1,"Save Config")
  247.  
  248. SYS"OS_Byte",161,194 TO ,,speed%
  249.  
  250. junk%=FNstartmenu(mouse%,"Speed",130)
  251. PROCwriteop(junk%,moustr%,&80,-1,STR$speed%,"a1-4-",2)
  252.  
  253. junk%=FNstartmenu(blankwrt%,"Seconds",130)
  254. PROCwriteop(junk%,blanstr%,&80,-1,"120","a0-9*",5)
  255.  
  256. junk%=FNstartmenu(desktop%,"Desktop",220)
  257. junk%=FNindirmenuop(junk%,0,mouse%,"Mouse Speed")
  258. junk%=FNmenuop(junk%,0,-1,"Find Caret")
  259. junk%=FNindirmenuop(junk%,%10,blankwrt%,"Blank Screen")
  260. junk%=FNindirmenuop(junk%,0,-1,"Close Windows")
  261. junk%=FNindirmenuop(junk%,0,-1,"Kill Caret")
  262. junk%=FNindirmenuop(junk%,&80,-1,"Clear Sprites")
  263.  
  264. junk%=FNstartmenu(tunmen%,"Tuning",130)
  265. PROCwriteop(junk%,tunstr%,&80,-1,"0","a0-9-",6)
  266.  
  267. junk%=FNstartmenu(volmen%,"Volume",130)
  268. PROCwriteop(junk%,volstr%,&80,-1,"127","a0-9",3)
  269.  
  270. junk%=FNstartmenu(sound%,"Sound",130)
  271. junk%=FNmenuop(junk%,1,-1,"Audio")
  272. junk%=FNmenuop(junk%,1,-1,"Speaker")
  273. junk%=FNmenuop(junk%,0,tunmen%,"Tuning")
  274. junk%=FNmenuop(junk%,&80,volmen%,"Volume")
  275.  
  276. junk%=FNstartmenu(compacmen%,"Compact",100)
  277. PROCwriteop(junk%,comstr%,&80,-1,":0","a0-4:",2)
  278.  
  279. junk%=FNstartmenu(typcon%,"Type",130)
  280. junk%=FNmenuop(junk%,0,-1,"Listed")
  281. junk%=FNmenuop(junk%,&81,-1,"Tabs")
  282.  
  283. junk%=FNstartmenu(cmcon%,"CMOS",130)
  284. junk%=FNmenuop(junk%,0,-1,"Save")
  285. junk%=FNmenuop(junk%,&80,-1,"Load")
  286.  
  287. junk%=FNstartmenu(extra%,"Extras",180)
  288. junk%=FNmenuop(junk%,0,typcon%,"Type")
  289. junk%=FNmenuop(junk%,0,-1,"ShutDown")
  290. junk%=FNindirmenuop(junk%,0,-1,"Shut Files")
  291. junk%=FNmenuop(junk%,0,compacmen%,"Compact ")
  292. junk%=FNmenuop(junk%,0,cmcon%,"CMOS")
  293. junk%=FNmenuop(junk%,&80,confrag%,"Config")
  294.  
  295. junk%=FNstartmenu(menu%,"Thynx",130)
  296. junk%=FNmenuop(junk%,0,infowind%,"Info")
  297. junk%=FNmenuop(junk%,0,trash%,"Trash")
  298. junk%=FNmenuop(junk%,0,driver%,"Driver")
  299. junk%=FNmenuop(junk%,0,desktop%,"Desktop")
  300. junk%=FNmenuop(junk%,0,sound%,"Sound")
  301. junk%=FNmenuop(junk%,0,extra%,"Extra")
  302. junk%=FNmenuop(junk%,&80,-1,"Quit")
  303.  
  304. junk%=OPENIN "<Thynx2$Dir>.Filetypes"
  305. a%=EVAL(GET$#junk%)
  306. !data%=0:data%!4=-((a%+1)*38):data%!8=200:data%!12=0
  307. SYS"Wimp_SetExtent",filewin%,data%:
  308. DIM tdata% a%*4:name%=nxti%:dummy%=tdata%
  309. $nxti%="FFF"+CHR$13:$(nxti%+4)="a0-9A-F"
  310. b%=FNnewicon(filewin%,0,-38,200,38,&701F131,"",nxti%,nxti%+4,4)
  311. nxti%+=12
  312. FOR i%=1 TO a%
  313. $dummy%=GET$#junk%:dummy%+=4
  314. b%=EVAL(GET$#junk%)
  315. a%=FNnewicon(filewin%,0,-(38*(1+i%)),200,38,&7019031+(b%<<28),GET$#junk%,0,0,0)
  316. NEXT
  317. CLOSE #junk%
  318.  
  319. junk%=OPENIN "<Thynx2$Dir>.Config"
  320. IF junk%=0 THEN CLOSE#junk%:ERROR 1222,"Configuration File not found"
  321. IF BGET#junk% THEN icon%=FNnewicon(-1,0,0,68,68,&3002,"!Thynx2",0,0,0):PROCtickitem(confrag%,0)
  322. IF BGET#junk% THEN PROCopenfr(mainwin%):PROCtickitem(confrag%,1)
  323. IF BGET#junk% THEN PROCopenfr(filewin%):PROCtickitem(confrag%,2)
  324. IF BGET#junk% FNfiles THEN OSCLI"WIPE <Thynx2$Dir>.Trash.* ~CFR~V":PROCtickitem(confrag%,3)
  325. IF BGET#junk% THEN
  326. PROCtickitem(confrag%,4)
  327. b%=OPENIN "<Thynx2$dir>.CMOS"
  328. IF b%>0 THEN FOR a%=0 TO 239:SYS"OS_Byte",162,a%,BGET#b%:NEXT
  329. CLOSE#b%
  330. ENDIF
  331. IF BGET#junk% THEN PROCtickitem(confrag%,5):blonk%=TRUE
  332. $name%=GET$#junk%
  333. $blanstr%=GET$#junk%
  334. IF blonk% THEN 
  335. PROCtickitem(desktop%,2):ttblnk%=FNreadtime
  336. SYS"OS_ReadMonotonicTime" TO time%:rtime%=time%+ttblnk%
  337. ENDIF
  338. CLOSE #junk%
  339.  
  340. DIM trashic% 9
  341. $trashic%=""
  342. junk%=FNnewicon(mainwin%,4,-70,68,68,&6102,"",trashic%,1,8)
  343. PROCtrashed
  344. FOR i%=1 TO 7
  345. READ a$
  346. junk%=FNnewicon(mainwin%,4+(74*i%),-70,68,68,&6002,a$,0,0,0)
  347. NEXT
  348. FOR i%=1 TO 4
  349. READ a$
  350. a$=a$+CHR$13
  351. $nxti%=a$
  352. junk%=FNnewicon(infowind%,154,-(52*i%),476,48,&0700013D,"",nxti%,-1,LEN(a$))
  353. nxti%+=LENa$
  354. NEXT
  355. xvec%=2:yvec%=3
  356. ENDPROC
  357. DATA reader,file_type,stamper,isprite,setdir,unset,chkmap
  358. DATA "Thynx II","Multitool utility","© Thinkpix Systems, 1992","2.02 (07-Oct-92)"
  359. :
  360. DEFFNnewwindow(vwx%,vwy%,vww%,vwh%,extx%,exty%,flags%,title%,sps,bak%)
  361. $data%=STRING$(88,CHR$0)
  362. data%!0=vwx%:data%!4=vwy%:data%!8=vwx%+vww%:data%!12=vwy%+vwh%:data%!24=-1
  363. data%!28=flags%:data%?32=7:data%?33=2:data%?34=7:data%?35=bak%:data%?36=3:data%?37=1
  364. data%?38=12:data%!40=0:data%!44=-vwh%-exty%:data%!48=vww%+extx%:data%!52=0:data%!56=&13D
  365. data%!60=3<<12:data%!64=sps:data%!72=title%
  366. SYS"Wimp_CreateWindow",,data% TO handle%:=handle%
  367. :
  368. DEFPROCopen(handle%)
  369. !data%=handle%:SYS"Wimp_GetWindowState",,data%:data%!28=-2:SYS"Wimp_OpenWindow",,data%
  370. ENDPROC
  371. :
  372. DEFPROCopenfr(handle%)
  373. !data%=handle%:SYS"Wimp_GetWindowState",,data%
  374. data%!28=-1
  375. SYS"Wimp_OpenWindow",,data%
  376. ENDPROC
  377. :
  378. DEFPROCclose(handle%)
  379. !data%=handle%:SYS"Wimp_CloseWindow",,data%
  380. ENDPROC
  381. :
  382. DEFFNnewicon(wind%,ix%,iy%,iw%,ih%,flag%,text$,d1%,d2%,d3%)
  383. data%!0=wind%:data%!4=ix%:data%!8=iy%:data%!12=ix%+iw%:data%!16=iy%+ih%:data%!20=flag%
  384. IF d1%=0 THEN
  385. $(data%+24)=text$
  386. ELSE
  387. data%!24=d1%:data%!28=d2%:data%!32=d3%
  388. ENDIF
  389. SYS"Wimp_CreateIcon",,data% TO ihandle%
  390. =ihandle%
  391. :
  392. DEFPROCclosedown
  393. ON ERROR OFF
  394. SYS"Wimp_CloseDown",task%,&4B534154
  395. ENDPROC
  396. :
  397. DEFFNstartmenu(m%,t$,w%)
  398. $m%=t$
  399. m%?12=7:m%?13=2:m%?14=2:m%?15=0:m%!16=w%
  400. m%!20=44:m%!24=0
  401. =m%+28
  402. :
  403. DEFFNmenuop(m%,h%,p%,t$)
  404. !m%=h%
  405. m%!4=p%
  406. m%!8=&7000021
  407. $(m%+12)=t$
  408. =m%+24
  409. :
  410. DEFFNindirmenuop(m%,h%,p%,t$)
  411. LOCAL tt%
  412. t$=t$+CHR$13
  413. tt%=LEN(t$)
  414. !m%=h%
  415. m%!4=p%
  416. m%!8=&7000121
  417. $nxti%=t$
  418. m%!12=nxti%
  419. m%!16=-1
  420. m%!20=tt%
  421. nxti%=nxti%+tt%
  422. =m%+24
  423. :
  424. DEFPROCwriteop(RETURN m%,RETURN w%,h%,p%,t$,e$,lent%)
  425. LOCAL tt%
  426. t$=t$+CHR$13
  427. tt%=lent%
  428. !m%=h%+%100
  429. m%!4=p%
  430. m%!8=%111000000001001000100010001
  431. w%=nxti%
  432. $nxti%=t$
  433. m%!12=nxti%
  434. nxti%=nxti%+lent%+1
  435. $nxti%=e$
  436. m%!16=nxti%
  437. nxti%=nxti%+LEN(e$)
  438. m%!20=lent%+1
  439. m%=m%+24
  440. ENDPROC
  441. :
  442. DEFPROCshowmenu(menu%,x%,y%,oniconbar%)
  443. LOCAL entries%
  444. !mlcn%=menu%:mlcn%!4=x%:mlcn%!8=y%:mlcn%!12=oniconbar%
  445. entries%=FNnumops(menu%)
  446. IF oniconbar% THEN ypos%=96+entries%*44 ELSE ypos%=y%+20
  447. SYS"Wimp_CreateMenu",,menu%,x%-64,ypos%
  448. ENDPROC
  449. :
  450. DEFFNmenuopted(m%,op%)
  451. LOCAL a$,ptr%
  452. IF m%=-1 THEN ERROR 0,"Menu Cock up"
  453. ptr%=m%+(40+(op%*24))
  454. IF (m%!(36+(op%*24)) AND 256)=256 THEN
  455. REM Menu data indirected.
  456. a$=$(!ptr%)
  457. ELSE
  458. a$=$ptr%
  459. ENDIF
  460. =a$
  461. :
  462. DEFFNnumops(m%)
  463. LOCAL c%:c%=1
  464. ptr%=m%+28
  465. WHILE (!ptr% AND &80)<>&80
  466. ptr%+=24:c%+=1
  467. ENDWHILE
  468. =c%
  469. :
  470. DEFPROCtickitem(m%,option%)
  471. m%!(28+(24*option%))=m%!(28+(24*option%)) OR %1
  472. ENDPROC
  473. :
  474. DEFPROCuntickitem(m%,option%)
  475. m%!(28+(24*option%))=m%!(28+(24*option%)) EOR %1
  476. ENDPROC
  477. :
  478. DEFFNticked(m%,option%)
  479. =m%!(28+(24*option%)) AND 1
  480. :
  481. DEFPROCallclose
  482. LOCAL er%
  483. er%=keywin%
  484. !data%=er%
  485. SYS"Wimp_GetWindowState",,data%
  486. er%=data%!28:!data%=er%
  487. REPEAT
  488. SYS"Wimp_SendMessage",3,data%,er%
  489. !data%=er%
  490. SYS"Wimp_GetWindowState",,data%
  491. er%=data%!28:!data%=er%
  492. UNTIL er%=-1
  493. PROCopen(keywin%)
  494. ENDPROC
  495. :
  496. DEFFNconfirm(mess$)
  497. LOCAL r%
  498. !data%=0
  499. $(data%+4)=mess$+CHR$0
  500. SYS "Wimp_ReportError",data%,%10011,"Thynx II" TO ,response%
  501. IF response%<>2 THEN =TRUE ELSE =FALSE
  502. :
  503. DEFPROCfindcaret
  504. LOCAL cr%
  505. SYS"Wimp_GetCaretPosition",,data%:cr%=!data%
  506. IF cr%=-1 THEN VDU7:ENDPROC
  507. SYS"Wimp_GetWindowState",,data%:data%!28=-1:!data%=cr%
  508. SYS"Wimp_SendMessage",2,data%,!data%
  509. MOUSE TO data%!4+((data%!12-data%!4)/2),data%!8+((data%!16-data%!8)/2)
  510. SYS"Hourglass_On"
  511. TIME=0:REPEATUNTIL TIME=200
  512. SYS"Hourglass_Smash"
  513. ENDPROC
  514. :
  515. DEFPROCcompac(a$)
  516. LOCAL free%,block%,olb%,ololb%
  517. IF a$="" THEN ENDPROC
  518. IF FNconfirm("Compact Free Space map of disc:'"+a$+"', Click OK to continue.") THEN
  519. SYS"Hourglass_On"
  520. block%=-1:olb%=-8:ololb%=42
  521. REPEAT
  522. ololb%=olb%:olb%=block%
  523. OSCLI"Compact "+a$
  524. SYS"ADFS_FreeSpace",a$ TO free%,block%
  525. UNTIL free%=block% OR (olb%=block% AND ololb%=block%)
  526. SYS"Wimp_StartTask","Map "+a$
  527. ENDIF
  528.  
  529. SYS"Hourglass_Smash"
  530. ENDPROC
  531. :
  532. DEFPROCdragin
  533. LOCAL type%,path$,a%,b%,branch$
  534. a%=0:type%=data%!40
  535. REPEAT:b%=data%?(44+a%):path$=path$+CHR$(b%):a%+=1:UNTIL b%=0
  536. a%=LEN(path$):REPEAT:a%-=1:UNTIL MID$(path$,a%,1)="." OR a%=0
  537. branch$=LEFT$(path$,a%-1)
  538. path$=LEFT$(path$,LENpath$-1)
  539. IF data%!20=mainwin% THEN
  540. CASE data%!24 OF
  541. WHEN 0:IF (INSTR(path$,"!Thynx2"))=0 THEN SYS"Wimp_StartTask","COPY "+path$+" <Thynx2$Dir>.Trash.* ~A~CDFL~N~PQR~S~T~V":PROCtrashed
  542. WHEN 1:PROCfront:IF tabson% THEN path$="-Tabexpand "+path$
  543. IF listit% THEN OSCLI"LIST "+path$:ELSE:OSCLI"TYPE "+path$
  544. PROCcont:PROCrestore
  545. WHEN 2:IF $name%<>"" AND type%<>&2000 AND type%<>&1000 THEN
  546. OSCLI"Settype "+path$+" "+$name%
  547. ENDIF
  548. WHEN 3:IF type%<>&1000 AND type%<>&2000 THEN OSCLI"STAMP "+path$
  549. WHEN 4:IF type%=&FF9 THEN OSCLI"ICONSPRITES "+path$:PROCrestore
  550. WHEN 5:IF type%<>&1000 AND type%<>&2000 THEN path$=branch$
  551. OSCLI"Dir "+path$
  552. WHEN 6:OSCLI"NoLib":OSCLI"NoDir"
  553. IF type%<>&1000 AND type%<>&2000 THEN path$=branch$
  554. OSCLI"Filer_CloseDir "+path$
  555. WHEN 7:path$=MID$(path$,INSTR(path$,":")+1,(INSTR(path$,".")-INSTR(path$,":")-1))
  556. SYS"Wimp_StartTask","Verify "+path$
  557. SYS"Wimp_StartTask","CheckMap "+path$
  558. ENDCASE
  559. ELSE
  560. IF type%<&1000 THEN $name%=STR$~type%:SYS"Wimp_ForceRedraw",filewin%,0,-40,200,0
  561. ENDIF
  562. ENDPROC
  563. :
  564. DEFPROCfront
  565. LOCAL x%,y%
  566. SYS"OS_ReadModeVariable",MODE,1 TO ,,x%
  567. SYS"OS_ReadModeVariable",MODE,2 TO ,,y%
  568. VDU4,14:COLOUR 135:COLOUR 0:CLS:PRINTTAB(1,0)"Press <Shift> to scroll"
  569. VDU 28,0,y%,x%,1
  570. COLOUR 128:COLOUR 7:CLS
  571. ENDPROC
  572. :
  573. DEFPROCcont
  574. COLOUR 135:COLOUR 0:VDU26
  575. PRINTTAB(1,0);"Press any key                  "
  576. a%=GET
  577. ENDPROC
  578. :
  579. DEFPROCrestore
  580. SYS"Wimp_ForceRedraw",-1,0,0,8000,8000
  581. SYS"Wimp_CommandWindow",-1
  582. ENDPROC
  583. :
  584. DEFPROCtrashed
  585. LOCAL junk%
  586. IF FNfiles THEN $trashic%="trashfu":ELSE $trashic%="trashem"
  587. ENDIF
  588. SYS"Wimp_ForceRedraw",mainwin%,0,-100,70,0
  589. ENDPROC
  590. :
  591. DEFFNfiles
  592. off%=0
  593. SYS "OS_GBPB",10,"<Thynx2$Dir>.Trash",data%,1,off%,100,"*" TO ,,,off%
  594. =off%
  595. :
  596. DEFPROCshit(a$)
  597. VDU4:PRINTTAB(1,1);a$:VDU5
  598. ENDPROC
  599. :
  600. DEFFNreadtime
  601. LOCAL a%
  602. a%=EVAL($blanstr%)*100
  603. IF a%=0 THEN $blanstr%="120":a%=12000
  604. =a%
  605. :
  606. DEFPROCdarken
  607. LOCAL x%,y%,e%,b%
  608. !data%=11
  609. data%!4=12
  610. data%!8=4
  611. data%!12=5
  612. data%!16=-1
  613. SYS"OS_ReadVduVariables",data%,data%
  614. x%=(!data%+1)<<data%!8
  615. y%=(data%!(4+1))<<data%!12
  616. VDU7:
  617. blankwin%=FNnewwindow(0,0,x%,y%,0,0,&50,ind%,1,7)
  618. PROCopenfr(blankwin%)
  619. SYS"Wimp_ReadPalette",,col%
  620. MOUSE OFF:SYS"Hourglass_On"
  621. VDU19,23,24,0;0;0;
  622. ENDPROC
  623. :
  624. DEFPROClighten
  625. !data%=blankwin%
  626. SYS"Wimp_DeleteWindow",,data%
  627. MOUSE ON:SYS"Hourglass_Off":OSCLI"POINTER 1"
  628. SYS"Wimp_SetPalette",,col%
  629. ENDPROC
  630. :
  631. DEFPROCbounce
  632. oxm%+=xvec%:oym%+=yvec%
  633. IF oxm%>1278 OR oxm%<1 THEN xvec%=-xvec%
  634. IF oym%>1023 OR oym%<1 THEN yvec%=-yvec%
  635. MOUSE TO oxm%,oym%
  636. ENDPROC
  637.  
  638.